Staff Portal
User Guide

Complete Reference for All Staff
Version: 2.4.1
Date: February 2026
Platform: Web — Chrome recommended
Audience: All Mint Vision Staff
Confidential — Internal Use Only
Section 1
01

Getting Started

Everything you need to know to log in and navigate the portal for the first time.

What Is the Staff Portal?

The Mint Vision Optique Staff Portal is a web-based practice management system built exclusively for Mint Vision staff. It replaces several disconnected tools your team used previously:

Old ToolReplaced By
Paper patient cards & intake sheetsDigital Forms + Customer profiles
Google Sheets order trackingOrders — Fulfillment Board (Kanban)
Excel inventory spreadsheetInventory browser + Purchase Orders
Printed work ordersDigital Work Order (printable from portal)
Manual invoicesInvoices (auto-generated, PDF-ready)

Accessing the Portal

Open Google Chrome (required — other browsers are not supported for all features) and navigate to the portal URL provided by your manager. The portal is accessible from any device with an internet connection — desktop, laptop, or tablet.

Browser Requirement
Always use Google Chrome. Some features — specifically canvas signatures and print layouts — require Chrome for correct rendering.

Logging In

On the login screen, enter your email address and password provided by your manager. Click Sign In.

Screenshot: 01-login
  • Your session stays active for 7 days. You will be automatically logged out after 7 days of inactivity.
  • If you forget your password, contact your manager — they can reset it from the Settings page.
  • There is no self-service password reset link available to patients (patients do not have accounts).
Important
Never share your login credentials with anyone, including other staff members. Each staff member has their own account. Sharing accounts makes it impossible to track who performed which actions.

After logging in, you will see a dark left panel — this is the sidebar. It is present on every page and is your primary way of navigating the portal.

Navigation Items Explained

  • Dashboard — Home screen. Revenue snapshot, alerts, and recent activity.
  • Customers — Full patient/customer database. Search, view, create, and edit records. Google Review tracking per customer.
  • Exams — Weekly exam tracking with payment method breakdown.
  • Forms — Digital patient forms. Send, track, and review intake documents.
  • Fulfillment Board — Kanban view of all active orders. Your daily workflow hub.
  • All Orders — Full historical order list (including completed and cancelled).
  • Invoices — All issued customer invoices.
  • All Frames — Inventory browser for all frame stock.
  • Vendors — Supplier contact management.
  • Purchase Orders — Track orders placed with vendors.
  • Analytics — Inventory health reports (dead stock, ABC analysis, etc.).
  • Settings — Your account details and notification preferences.

Notifications Bell

In the top-right corner of every page, you will see a bell icon. When you have unread notifications, a red dot with a count appears. Click the bell to open a dropdown showing your recent notifications. The bell refreshes automatically every 30 seconds — you do not need to reload the page.

Tip
Notifications tell you about things that need your attention: patient forms completed, orders ready for pickup, low stock alerts, and more. Keep an eye on the bell throughout your shift.

Signing Out

Click the Sign Out button at the very bottom of the sidebar. Always sign out when leaving a shared computer or at the end of your shift.

Section 2
02

Dashboard

The dashboard is your daily command center — it shows key performance metrics, urgent alerts, and recent activity at a glance.

Screenshot: 02-dashboard

2.1 Scoreboard (Click to Cycle)

At the very top of the dashboard, a grey scoreboard card shows three large numbers. Click anywhere on the card (or click the dot indicators) to cycle through three views:

ViewWhat It Shows
This MonthRevenue, avg ticket, and orders for the current calendar month. Goal bar shows monthly target.
Year to DateSame metrics for the current calendar year. Goal bar shows yearly target (monthly goal × 12).
All TimeLifetime totals across all orders. No goal bar.

Below the numbers (for Monthly and Yearly views), a goal progress bar shows how close you are to hitting the target. The bar fills with green as revenue grows.

Tip
Click the scoreboard during morning huddles to quickly show monthly, yearly, and all-time performance. The three small dots at the top-right indicate which view is active.

2.2 Money on the Table

This section only appears when there are open opportunities — things your team should follow up on today. Think of it as an automatic to-do list generated from your data.

Money on the Table — dashboard section

Deposit Taken — Not Picked Up

Any order where a deposit was collected but the patient has not yet come in to pick up their glasses. These orders are marked READY and should be followed up on. Click any row to open the order directly.

Exams Without Purchase

Patients who had an exam but did not purchase frames or lenses. Grouped into three time buckets:

  • 0–30 days — Freshest leads. A friendly follow-up call may be enough.
  • 31–60 days — Getting colder. Consider a promotion or personal outreach.
  • 61–90 days — Approaching 3 months. Last chance before they go elsewhere.

Due for Recall

Patients whose last exam was 1 to 2 years ago — they are due for their annual or biennial checkup. This list drives your recall outreach campaign.

Contact Lens Drop-offs

Contact lens patients who have had no contact lens order in 90+ days. These patients may be purchasing CL supplies elsewhere and represent a revenue recovery opportunity.

2.3 Conversion Metrics

Two critical ratios appear as large cards with color-coded status:

MetricTargetRed Alert If...
Exam → Purchase Rate≥ 70%Falls below 70%
Avg Frames per Transaction≥ 1.3Falls below 1.3

When a metric is red, it means the store is underperforming in that area this month. Review with your manager and discuss what's driving the gap.

Understanding Avg Frames per Transaction
A score of 1.3 means that on average, patients buy 1.3 pairs of frames per visit (e.g., some buy 2 pairs — distance + sunglasses). Recommending second-pair options during every fitting is the most effective way to raise this number.

2.4 Owner / Manager View (Admin Role Only)

Staff with the Admin role see an additional section below the conversion metrics with deeper business intelligence:

Revenue Growth

  • Month-over-Month (MoM): This month vs. last month, with a trend arrow (↑ or ↓)
  • Year-over-Year (YoY): This month vs. same month last year

Revenue by Category (YTD)

A horizontal bar chart showing year-to-date revenue split across five categories:

  • Glasses
  • Contacts
  • Sunglasses
  • Accessories
  • Exam Only

Fulfillment Speed

Average number of days from order creation to patient pickup. A lower number means faster turnaround and better patient experience. The benchmark is typically 10–14 days for lab orders.

Managers Note
These admin metrics are only visible to accounts with the Admin role. Contact the system administrator to adjust staff role settings from the Settings page.

2.5 Recent Orders Strip

At the bottom of the dashboard is a row of the 6 most recently created orders. Each card shows the customer name, order number, status badge, and the order total. Click any card to jump directly to that order's detail page.

Recent Orders strip — dashboard
Section 3
03

Customers

The Customers section is your full patient database — every person who has ever visited, called, or been sent a form by Mint Vision.

3.1 Customer List

Screenshot: 03-customers-list

Search

The search bar at the top accepts name, email address, or phone number. Results update as you type. Phone search works with partial numbers (e.g., searching "6476" will show any customer whose phone contains those digits).

Lifecycle Tabs

Seven filter tabs appear below the search bar to quickly segment your customer base:

All VIP Active New Lapsed Dormant Lead

Table Columns

ColumnDescription
NameFull name. Shown in red if the customer has an outstanding balance.
PhonePrimary phone number. Click to call (on mobile).
LifecycleColored badge indicating the customer's engagement status.
LTVLifetime Value — total revenue collected from this customer, all-time.
Last PurchaseDate of their most recent completed order.
# OrdersTotal number of orders (all statuses) associated with this customer.

The list shows 25 customers per page. Use the pagination controls at the bottom to navigate between pages.

3.2 Lifecycle Definitions

Understanding lifecycle stages helps you prioritize outreach and identify revenue opportunities. These are calculated automatically based on purchase history.

VIP
3 or more completed orders OR lifetime value over $2,000. Your highest-value patients — give them priority service.
Active
Made a purchase in the last 18 months. Regularly engaged patients — focus on recall timing and second-pair opportunities.
New
Account created less than 6 months ago with 1 or fewer orders. Just getting started — focus on onboarding and building the relationship.
Lapsed
Last purchase was 18 months to 3 years ago. At risk of going to a competitor — proactive outreach and a compelling reason to return is key.
Dormant
No purchase in 3+ years, or has an account but has never purchased. Long-term win-back campaign or data cleanup candidate.
Lead
Recently created record with no orders yet. May have been sent an intake form or called in. Follow up to convert to Active.

3.3 Customer Detail Page

Clicking on any customer's name opens their full profile. This is the single source of truth for everything about a patient.

Customer detail page

Alert Banners (Top of Page)

Up to four alert banners may appear at the top of the customer detail page:

  • Exam Only  This patient has had exams but no frame/lens purchases — conversion opportunity. Recommend second-pair or sunglasses.
  • Under 21  Patients under 21 have growing eyes — their PD measurement may be outdated. Verify before ordering.
  • Outstanding Balance  The patient owes money. The amount is shown. Collect before releasing new orders.
  • Insurance Eligible Soon  Their insurance benefits renew within the next 30 days — great time to schedule an appointment.

Left Column — Contact & Insurance

Contact Card

  • Phone, email, date of birth (age calculated automatically)
  • City / Province
  • Family group (linked family members share records)
  • Occupation
  • Referral source (how they heard about Mint Vision)

Insurance Card

  • Insurance provider name
  • Policy / Member number
  • Last claim date
  • Next eligible date (when benefits reset)

Store Credits Card

Shows any store credit balance available for this customer. Staff with appropriate permissions can add credits and set expiry dates.

Notes

A yellow sticky-note style area for free-form staff notes. Visible to all staff. Example uses: "prefers to be called Bob", "allergic to nickel frames", "always asks for Dr. Sharma".

Tags

Colorful pill-shaped labels for quick categorization (e.g., VIP, Contact Lens Patient, Referred: Dr. Chen). Click to add or remove tags.

Right Column — Clinical & Transaction History

Lifecycle & Journey

A summary card showing: Lifetime Value, Average Order Value, Completed Orders count, Total Orders count, first purchase date, and most recent purchase date.

Prescriptions

Shows all prescriptions on file, separated into two categories:

  • Our Rx  Prescriptions recorded directly in the portal (from an in-store exam).
  • External Rx  Prescriptions brought in from an outside doctor.

Each prescription row shows: OD and OS values for Sphere (Sph), Cylinder (Cyl), Axis, Add (for bifocals/progressives), and PD (pupillary distance).

Add External Prescription

An expandable section with two options:

  • Manual entry — type in the Rx values field by field.
  • AI OCR — upload a photo of the Rx slip. The system reads the values automatically using AI and pre-fills the form for you to verify.
AI OCR Tip
For best results with AI prescription scanning, photograph the Rx in good lighting with the text flat and fully in frame. Always verify the AI-extracted values against the original paper before saving.

Medical History

An inline-editable form for health conditions relevant to vision care (e.g., diabetes, glaucoma, dry eye, medication list). Click any field to edit directly — no separate "edit mode" required.

Orders

All orders associated with this customer, listed in reverse chronological order. Each row shows the order number (clickable), status badge, date, and total.

Forms & Documents

All digital forms sent to or completed by this patient. Status badges:

Pending Completed Expired Signed

3.4 Creating a New Customer

Click the "New Customer" button in the top-right corner of the Customers list page.

Screenshot: 05-customer-new

Required fields are marked with an asterisk. Fill in at minimum:

  • First Name and Last Name
  • Phone number (digits only — no spaces, dashes, or brackets)

Optional but recommended fields: email address, date of birth, city/province, insurance details, referral source, initial notes, and tags.

3.5 Editing a Customer

On any customer's detail page, click the "Edit" button to open the same form, pre-filled with current values. Make your changes and click "Save Changes".

Data Entry Note
Phone numbers must be entered as digits only. For example, enter 6476485809 — not (647) 648-5809. The portal formats the display automatically.

3.5 Scan Rx — Digitise a Physical Prescription

Scan Rx is a dedicated workflow for digitising paper prescriptions that patients bring in from an outside doctor. It combines patient lookup, quick patient creation, and AI-powered OCR into a single focused page — without needing to navigate to a customer profile first.

Access it from the sidebar: Customers → Scan Rx.

Step 1 — Find or create the patient

Step 2 — Scan the Rx

Step 3 — Done

A confirmation screen appears. You can:

Viewing saved scans

On the customer detail page, under the External Prescriptions section, each row with a stored scan shows a "View scan" link that opens the original image in a new tab.

AI OCR Tips
  • Photograph the Rx flat in good light — avoid shadows across the text.
  • Always verify AI-extracted values against the paper Rx before saving. AI can misread faded or handwritten text.
  • The original scan image is stored permanently regardless of OCR accuracy — it serves as the definitive record.

3.6 Current Glasses Reading (Lensometer)

Record the prescription of the lenses a patient is currently wearing. This is useful for comparing against a new Rx after an exam — it's distinct from "External Prescriptions" (which are paper Rx scripts from other providers) and "Our Prescriptions" (which are Rx written at your clinic).

Where to Find It

On the Customer Detail Page, scroll to the Prescriptions card. Above "Our Prescriptions", you'll see a teal-badged section labelled "Current Glasses Reading" with the subtitle "What they're wearing".

Recording a Reading

  1. Click "Record New Reading" to expand the form.
  2. Enter the date (defaults to today).
  3. Fill in the OD (right eye) and OS (left eye) values: Sphere, Cylinder, Axis, Add.
  4. Enter PD (binocular) if available.
  5. Optionally snap a lensometer photo using the camera button — this uploads and stores the image alongside the reading.
  6. Add any notes (e.g., "Scratched lenses, patient reports headaches").
  7. Click "Save Reading".

How It Behaves

Tip
  • Take the lensometer reading before the eye exam so you have a baseline for comparison.
  • The photo feature works best with a phone or tablet — tap the camera button and photograph the lensometer display directly.
Section 4
04

Orders

Orders are the core transaction record — from the moment a patient commits to buying, through lab ordering and pickup. This section covers every stage of the order lifecycle.

4.1 Order Status Flow

Every order moves through a defined sequence of statuses. Understanding these stages is essential for day-to-day operations.

DRAFT CONFIRMED LAB ORDERED LAB RECEIVED VERIFIED READY PICKED UP

Orders can be CANCELLED from any active stage.

StatusColorWhat It MeansWho Advances It
DRAFTGrayOrder created but not yet finalized. No deposit required.Staff (auto on save)
CONFIRMEDBlueOrder confirmed with patient. Deposit collected. Ready to send to lab.Staff → "Confirm Order"
LAB ORDEREDOrangeWork order sent to the lab. Lenses in production.Staff → "Send to Lab"
LAB RECEIVEDYellowLenses/order received back from lab. Needs Rx verification.Staff → "Mark Lab Received"
VERIFIEDIndigoRx and frame have been verified against the prescription. Ready to notify patient.Optician → "Verify Rx"
READYGreenPatient notified. Order ready for pickup at the store.Staff → "Mark Ready"
PICKED UPGrayPatient has picked up their order. Dispensed and complete.Staff → "Mark Picked Up"
CANCELLEDRedOrder cancelled. Refund process initiated separately.Staff → "Cancel Order"

4.2 Fulfillment Board (Kanban)

The Fulfillment Board is the default view when you click "Orders" in the sidebar. It gives a visual overview of all active orders organized by status in a Kanban (column) layout — exactly like a whiteboard with sticky notes.

Fulfillment Board — Kanban view

Reading the Board

  • Each column represents one order status.
  • Each card represents one order. Cards show: customer name, order number, frame brand & model, due date, and balance remaining.
  • Cards with a red due date are overdue.
  • Completed statuses (Picked Up, Cancelled) are not shown on the board — they are only visible in the All Orders list.

Drag and Drop

You can drag an order card from one column to the next to advance its status. For example, drag from CONFIRMED to LAB ORDERED when you've submitted the work order to the lab.

Note on Drag-and-Drop
Some status transitions may trigger a confirmation dialog or modal (e.g., advancing to PICKED UP shows the Pickup Complete modal). Follow the prompts before the status updates.

Switching to List View

Click the "List View" button (top-right of the board) to switch from the Kanban layout to a searchable table of all orders. Click "Board View" to return.

Creating a New Order from the Board

Click the "New Order" button (top-right) to launch the 7-step order creation wizard.

4.3 All Orders (List View)

The All Orders link in the sidebar sidebar (under Orders) takes you to a searchable, filterable table of every order ever created — including completed and cancelled ones.

Screenshot: 07-all-orders
ColumnDescription
Order #Unique order identifier. Click to open the order detail page.
CustomerPatient name. Click to open the customer detail page.
TypeOrder type: Glasses, Contacts, Sunglasses, Accessories, or Exam Only.
StatusCurrent status badge.
TotalCustomer-facing order total.
CreatedDate the order was first created.

4.4 Creating a New Order — 7-Step Wizard

Clicking "New Order" launches a guided wizard. Work through each step in sequence. You can navigate back to previous steps to correct information before confirming.

1
Customer
Search for and select an existing customer from the database. If the patient is new, you can create their record here before continuing.
2
Order Type
Choose the primary category: Glasses / Contacts / Sunglasses / Accessories / Exam Only. This determines which fields appear in subsequent steps.
3
Prescription
Select an existing prescription from the customer's file, or enter a new one. Fill in OD and OS values: Sphere, Cylinder, Axis, Add, and PD (pupillary distance).
4
Frame & Lens
Enter the frame details: brand, model, colour. Select lens type (single vision, bifocal, progressive) and any coatings (anti-reflective, blue light, transitions, etc.).
5
Items & Pricing
Add individual line items to the order: Frame, Lenses, Contacts, Services, Discounts, or Other. Each item has two price fields — Customer Price (what the patient pays) and Real Price (your actual cost/internal tracking). This is the dual-invoice system — customers never see the "Real" column.
6
Payment
Enter the deposit amount collected, select the payment method (Cash / Debit / Credit / Insurance / Other), and add a reference number if applicable (e.g., credit card last 4 digits, insurance claim number).
7
Review & Confirm
A full summary of everything entered in steps 1–6. Review carefully, then click "Place Order" to finalize. The order is created with status CONFIRMED.
Screenshot: 08-order-wizard-step1

4.5 Order Detail Page

Clicking any order number opens the full order detail. This is where you manage the order throughout its lifecycle.

Order detail page

Header Bar

  • Order number (e.g., #1042) and status badge
  • Created date and assigned staff member
  • Invoice button — top right. A green ✓ checkmark appears next to it if an invoice has already been issued.
  • Work Order button — opens the print-ready work order for the lab.

Status Advance Button

A prominently placed action button at the top of the page advances the order to the next status. The button label changes depending on current status:

Current StatusButton Label
CONFIRMEDSend to Lab
LAB ORDEREDMark Lab Received
LAB RECEIVEDVerify Rx
VERIFIEDMark Ready for Pickup
READYMark Picked Up

Left Column

  • Customer — linked to customer detail page
  • Frame & Lens details — brand, model, colour, lens type, coatings
  • Insurance — plan and claim reference if applicable
  • Internal Notes — visible only to staff (not on invoice or work order)
  • Lab Notes — notes printed on the work order sent to the lab

Right Column

  • Items table — all line items with quantity, unit price, and line total. Shows total at bottom.
  • Deposit Paid — amount collected at time of order
  • Balance Due — total minus deposit (what patient owes at pickup)
  • Payments history — every payment recorded on this order, with date and method
  • Status History — a timeline of every status change with timestamp and staff name

4.6 Pickup Complete Modal

When you click "Mark Picked Up", a modal dialog appears before the status changes. This ensures you capture important follow-up actions at the point of dispensing:

Screenshot: 12-pickup-modal
  • Send review request — SMS the patient a link to leave a Google review. Auto-recommended for orders over $500.
  • Add to referral campaign — immediately enrolls the patient in the active Post Purchase Referral campaign (first message sent in 3 days).
  • Send family promo offer — appears only if the patient has linked family members; immediately enrolls each family member in the active Family Add-on campaign (starts in 7 days).
  • Mark as low-value — opts this patient out of all future marketing campaigns.
  • Print invoice Recommended — opens the invoice in a new browser tab and prints automatically after a brief delay. Checked by default.

Click "Confirm Pickup" to finalize. The order moves to PICKED UP status.

4.6.1 Invoice Auto-Print at Pickup

The Print invoice checkbox in the Pickup Complete modal (checked by default) triggers automatic printing when you confirm pickup:

  1. Click "Mark Picked Up" on a READY order
  2. Confirm or adjust the engagement options in the modal
  3. Leave Print invoice checked (it is by default)
  4. Click "Confirm Pickup"
  5. The invoice page opens in a new browser tab and the print dialog appears automatically after ~600 ms
Tip: If you don't want to print right now (e.g. the patient is picking up by phone and the invoice was already emailed), uncheck Print invoice before confirming. No new tab will open.

4.7 Work Order

When you click "Send to Lab" on any non-exam order, the portal automatically opens the work order in a new tab and triggers the print dialog. No extra steps needed — just confirm the print when the dialog appears.

You can also open the work order manually at any time by clicking the "Work Order" button on the order detail page.

Tip: Eye exam orders (EXAM ONLY) do not trigger the auto-print — no work order goes to the lab for exams.
Screenshot: 13-work-order

The work order includes:

  • Centered "MINTVISION" header with date and order number
  • Patient name, phone, and email in bordered boxes
  • Prescription grid: OD and OS × Sphere / Cylinder / Axis / Add / PD
  • Frame details: brand, model, colour, and measurements
  • Lens specifications: type, index, coatings
  • Lab notes (from the Internal Notes field)

Use Chrome's built-in print function (Cmd+P on Mac, Ctrl+P on Windows) to print or save as PDF.

4.8 Queue Another Order Before Saving

On busy days when a patient is ordering both glasses and contacts, you can queue a second order before the first one is even saved — without clicking through the success overlay.

How to Use

  1. Fill out the order wizard as normal through step 6 (Prescription)
  2. On Step 7 — Review, find the Invoice Actions card
  3. Check "Add another order for {Patient First Name} after saving"
  4. Click "Create Order"
  5. The order is saved, and the wizard immediately resets to step 1 with the same patient already selected
  6. Fill in the next order and repeat
Tip: If you also have Print Work Order checked, the work order opens in a new background tab (auto-printing) while the wizard resets — so the lab gets the paperwork right away and you can keep going.
Success overlay vs. queue mode
When the checkbox is not checked, the normal success overlay appears after saving (View Order / Add Another Order / Back to Orders). When it is checked, the overlay is skipped entirely and the wizard resets automatically.
Section 5
05

Invoices

The portal generates professional customer invoices that can be printed or emailed. The dual-invoice system lets you maintain separate customer-facing and internal pricing.

5.1 Invoices List

Navigate to Invoices in the sidebar (under Orders). This page lists all invoices that have been formally issued.

Screenshot: 10-invoices-list
ColumnDescription
Date IssuedWhen the invoice was formally issued (not the order date).
Order #Linked to the order that generated this invoice.
CustomerPatient name.
TotalCustomer-facing invoice total.
BalanceRemaining balance (total minus deposits paid). Red if still owing.
View / PrintOpens the customer-facing invoice for print or PDF.
Internal amberOpens the internal version showing real (cost) amounts. Only visible to authorized staff.

5.2 Invoice View & Print

The invoice view is a clean, professional document formatted for customer presentation. It includes:

Invoice view and print page
  • Mint Vision Optique header with address and contact info (black & white layout)
  • Invoice number and date issued
  • Patient name and address
  • Line items: description and price per line
  • Subtotal (sum of line items), then deductions: Insurance Coverage, Referral/Promo, Deposit — all rows always visible (even if $0.00)
  • Total (subtotal minus all deductions) — in bold
  • Payment terms and any invoice notes

Issuing an Invoice

From the Order Detail page, click the "Invoice" button. On the invoice view, click "Issue Invoice" to formally record the invoice in the database. A green ✓ will appear on the order detail page confirming it has been issued.

If you need to re-generate the invoice (e.g., after a price correction), click "Re-Issue Invoice". This creates an updated invoice record.

Download PDF

Click the "Download PDF" button in the action bar to download a server-generated PDF of the invoice. The PDF matches the on-screen layout (black & white, no prescription table). Both customer and internal invoice modes are supported.

When to Issue an Invoice
Issue the invoice when the order is ready for pickup or at the time of payment. Issuing too early (while pricing may still change) creates record-keeping complexity.

5.3 The Dual Invoice System

When an order uses dual-invoice pricing (two price columns: Customer Price and Real Price), two versions of the invoice exist:

VersionPrices ShownWho Sees It
Customer InvoiceCustomer-facing prices (what the patient pays)Patient, insurance claim
Internal Invoice InternalReal/cost prices (actual amounts)Manager, bookkeeper only
Confidential
Never share the Internal invoice version with patients. The Internal link is marked in amber and is only accessible via the Invoices list — it does not appear on the customer-facing invoice page.
Section 6
06

Forms

The Forms system replaces paper intake sheets with digital forms patients can fill out on their phone before their appointment — or on a tablet in-store.

6.1 Forms Hub

Click Forms in the sidebar to open the Forms Hub. You'll see three tabs: Pending / Completed / Intake Packages.

Screenshot: 14-forms-hub

The Four Form Templates

TemplatePurpose
New Patient RegistrationCollects all patient demographics, contact info, and medical history.
Privacy & Consent (HIPAA)Privacy policy acknowledgment and consent for treatment/data sharing.
Insurance VerificationPatient's insurance details for billing purposes.
Frame Repair WaiverLiability waiver for frame adjustment or repair services.

6.2 Sending a Form to a Patient

To send an individual form:

  1. From the Forms Hub, select a template (e.g., "New Patient Registration").
  2. Search for and select the customer to associate with the form.
  3. Click "Generate Link". A unique, one-time URL is created.
  4. Copy the link and send it to the patient via text message, email, or display it as a QR code.
  5. The form status appears as Pending in the Forms Hub.
  6. When the patient submits, status updates to Completed and you receive a notification.
Patient Experience
Patients do not need an account or password. The unique link takes them directly to the form. It works on any smartphone browser — no app required.
Form detail — sending a form to a patient

6.3 Intake Packages (New Patient Onboarding)

An Intake Package bundles all three essential new patient forms into a single link:

  1. New Patient Registration
  2. Privacy & Consent (HIPAA)
  3. Insurance Verification

The patient completes all three in sequence — when they finish one, they are automatically redirected to the next. After all three are done:

  • A customer record is automatically created (or updated) in the database using the information from the New Patient form.
  • The customer's isOnboarded flag is set, marking them as fully registered.
  • You receive an INTAKE_COMPLETED notification.
Best Practice
Send intake packages to new patients 24–48 hours before their first appointment. This saves 10–15 minutes at check-in and ensures their record is already in the system when they arrive.
Screenshot: 15-intake-packages

6.4 In-Person Kiosk Mode

For patients without smartphones or who prefer to fill out forms in-store, open the form link on a store tablet. The form is designed for touch interaction:

  • Large, tap-friendly input fields
  • A canvas signature pad for patients to sign directly on the screen using their finger or a stylus
  • No staff login required on the kiosk device
Tablet Setup Tip
Keep a tablet in the waiting area with the intake package link bookmarked or displayed as a QR code on a small stand. Walk-in patients can self-register while they wait.

6.5 Reviewing Completed Forms

When a patient submits their intake forms, you will receive a notification. To review the submission:

  1. Go to FormsCompleted tab (or Intake Packages tab).
  2. Click on the completed intake package.
  3. The review page shows all submitted information: demographics, medical history, insurance details, and the patient's signature.
  4. Click "Apply to PMS" to pull the patient's submitted data into their customer record in the portal.
Screenshot: 15b-form-review
Always Review Before Applying
Read through the submitted form before clicking "Apply to PMS". Patients occasionally make typos (especially with dates and insurance numbers). Verify key fields before overwriting the customer record.

6.6 Public Form Page

The public form URL (format: /f/[unique-token]) is the page patients see when they open the link. It:

  • Requires no login
  • Displays the form template with all input fields
  • Includes a canvas signature area at the bottom
  • Shows a branded "Thank You" success page after submission

Links expire after the form is submitted — a patient cannot submit the same link twice.

6.7 Smart Intake Link (Self-Service Onboarding)

The Smart Intake Link is a universal URL (/intake/start) that you can share with any patient — via SMS after booking, on your website, or as a QR code in-store. Unlike the staff-created intake package, this link is always the same and requires no staff action to set up.

How It Works

  1. Patient opens the link and sees two options: "I'm a New Patient" and "I'm a Returning Patient".
  2. New Patient: A fresh intake package (Registration + Privacy + Insurance) is created and the patient is redirected to fill it out.
  3. Returning Patient: The patient enters their phone number. If found, their existing data (name, contact, address, insurance) is pre-filled into the forms so they only need to verify and update. If the phone isn't found, they can try their email. If neither matches, they're redirected to the new patient flow.

What Gets Pre-Filled

  • First and last name
  • Phone, email, date of birth, gender
  • Address, city, province, postal code
  • Insurance provider, policy number, group number, member ID, coverage type

Sensitive data (medical history, prescriptions, health card) is never exposed through the lookup.

Tip
  • Print a QR code pointing to your /intake/start URL and display it at reception — patients can start paperwork on their own phone while waiting.
  • The lookup is rate-limited and timing-safe to prevent anyone from guessing patient information.
  • When a returning patient submits, their existing record is updated (not duplicated) with any changes they made.

On the Staff Side

Self-service packages appear in the Forms Hub just like staff-created ones. The "Sent by" column shows "Self-service" instead of a staff name. Review and Apply workflows work identically.

Section 7
07

Inventory

The Inventory section lets you track every frame in stock, manage vendors, create purchase orders, and analyze inventory health — all in one place.

7.1 All Frames Browser

Click All Frames in the sidebar to open the inventory browser. A stats bar across the top shows a live snapshot:

$48,250
Retail Value
312
Total Units
48
On Order
7
Low Stock
Screenshot: 16-inventory-frames

Filters

Use the filter panel to narrow down the frame list:

FilterOptions
SearchBrand name, model name, SKU, or colour code
TypeOptical / Sun / Reading / Safety / Sport
GenderMen's / Women's / Unisex / Kids
Stock StatusIn Stock / Low Stock / Out of Stock / On Order
Age<3 months (green) / 3–6 months (yellow) / 6–12 months (orange) / 12 months+ (red)
VendorFilter by supplier/vendor name

Table Columns

ColumnDescription
ThumbnailFrame photo (if uploaded)
Brand · ModelWith an aging dot (green/yellow/orange/red) indicating time in stock
SKUUnique stock-keeping unit identifier
CategoryFrame type and gender
VendorSupplier name
Retail PriceCustomer-facing selling price
On HandPhysical stock currently in store
On OrderUnits expected from open purchase orders
AvailableOn Hand minus any committed/reserved quantity

7.2 Frame Detail Page

Click any frame row to open its full detail page.

Screenshot: 17-frame-detail

Frame Information

  • Brand, Model, Colour, UPC (barcode), SKU
  • Category (Optical/Sun/etc.), Gender, Style Tags
  • Vendor (linked to vendor record)

Pricing

  • Retail Price — what you charge patients
  • Wholesale Cost — what you paid the vendor per unit
  • Landed Cost — wholesale cost plus any shipping/duties

Stock

  • Quantity On Hand — physical count
  • Committed Qty — units reserved for open orders
  • On Order Qty — units expected from open POs
  • Reorder Point — stock level that triggers a low-stock alert

Inventory Ledger

A full history of all stock movements for this frame: initial stock entry, adjustments, sales (debits), and receipts from purchase orders (credits). Each entry shows the date, movement type, quantity change, and resulting balance.

7.3 Adding a New Frame to Inventory

Click "New Item" on the All Frames page. Fill in the frame details form:

  • Required: Brand, Model, SKU, Category, Gender
  • Recommended: Colour, UPC, Vendor (select from vendor list), Retail Price, Wholesale Cost, Landed Cost, Reorder Point
  • Initial Stock Qty: Enter the number of units you are adding. This creates the first ledger entry.
SKU Convention
Use a consistent SKU format such as BRAND-MODEL-COLOR (e.g., RAY-RB3025-GOLD). This makes searching and reporting much easier.

7.4 Vendors

Navigate to Vendors in the sidebar (under Inventory). This is your supplier contact book.

Screenshot: 18-vendors

Vendor List

Shows all suppliers with their contact information and the number of inventory items sourced from each.

Creating / Editing a Vendor

Click "New Vendor" (or "Edit" on an existing vendor). Fields:

  • Company Name
  • Contact Person name
  • Email address
  • Phone number
  • Notes (payment terms, ordering instructions, rep name, etc.)

7.5 Purchase Orders

Click Purchase Orders in the sidebar to manage all orders placed with vendors.

Purchase Order Status Flow

Draft Sent Confirmed Partial Received | Cancelled
Screenshot: 19-purchase-orders

PO List Tabs

  • All — every purchase order ever created
  • Open — Draft, Sent, Confirmed, or Partial (not yet fully received)
  • Received — fully received POs
  • Cancelled — cancelled POs

Creating a Purchase Order

  1. Click "New PO".
  2. Select the Vendor from the dropdown.
  3. Set the expected delivery date.
  4. Add line items: search for inventory frames, enter the quantity ordered and the unit cost negotiated with the vendor.
  5. Click "Save as Draft" to save without sending, or "Send to Vendor" to mark it as Sent.

Receiving a Purchase Order

When inventory arrives from a vendor:

  1. Open the PO and click "Receive Items".
  2. For each line item, enter the quantity actually received (may differ from what was ordered).
  3. Click "Confirm Receipt".
  4. The system automatically updates stock quantities in inventory and creates ledger entries for each item received.
  5. If all items are received → status becomes Received. If only some → status becomes Partial.
Partial Receipts
It is common for vendors to ship in multiple shipments. A PO can be received multiple times. Each receipt updates the inventory and the PO status. Leave the PO open until all items are received.
Screenshot: 19b-po-detail

7.6 Inventory Analytics

Click Analytics in the sidebar. This page gives you a health report on your entire inventory.

Summary Stats

127
Total SKUs
$48,250
Stock Value (Retail)
$22,100
Invested (Cost)
48
Units On Order
Screenshot: 20-inventory-analytics

Dead Stock & Aging Report

Frames that have had no sales in 6 or more months. Sorted by days idle (longest first).

ColumnDescription
FrameBrand and model
VendorSupplier
Stock QtyUnits still on hand
Days IdleDays since last sale or receipt
Value at CostHow much cash is tied up in this stock
Recommended ActionSystem-suggested action based on age

Recommended actions by age:

  • Monitor — 6–9 months idle
  • 10% off — 9–12 months idle
  • 25% off — 12–18 months idle
  • 40% off — 18–24 months idle
  • Discontinue — 24+ months idle

Best Sellers (Top 10)

The 10 frames with the highest unit sales over the selected period. Shows frame name, units sold, and total revenue generated.

Worst Sellers

Frames with zero sales that have been in stock for 90+ days. Shows days in stock, value at cost, and a recommended action.

ABC Analysis

ABC analysis categorizes each frame by its contribution to total revenue:

CategoryRevenue ContributionStrategy
ATop 80% of revenuePrioritize. Keep well-stocked. Never let these go out of stock. Feature on display.
BNext 15% of revenueMonitor. Maintain adequate stock. Review quarterly.
CBottom 5% of revenueConsider reducing. May be candidates for discontinuation or clearance.

The system shows both the computed ABC category (based on actual sales) and the currently assigned category on each frame record. If they differ, consider updating the frame's category to reflect current performance.

Section 8
08

Notifications

The notification system keeps you informed of important events as they happen — without needing to refresh or check multiple screens.

8.1 The Notification Bell

The bell icon appears in the top-right corner of every page in the portal. When you have unread notifications:

  • A red dot with a count badge appears over the bell.
  • Clicking the bell opens a dropdown popover showing your most recent notifications (up to ~20).
  • The bell automatically refreshes every 30 seconds — no page reload needed.
  • Clicking a notification in the list marks it as read and may navigate you to the relevant page.
Notification bell — open dropdown

8.2 Notification Types

TypeWhen It FiresWho It's Useful For
FORM_COMPLETED A patient submits any individual form Front desk staff monitoring patient submissions
INTAKE_COMPLETED A patient completes all 3 forms in an intake package Front desk — triggers "Apply to PMS" review workflow
ORDER_READY An order is advanced to "Ready for Pickup" Front desk — patient can be called to pick up
ORDER_CANCELLED Any order is cancelled All staff — for awareness and follow-up
ORDER_LAB_RECEIVED An order is advanced to "Lab Received" Optician — triggers Rx verification step
PO_RECEIVED A purchase order is fully received Manager / inventory staff — frames arrived
LOW_STOCK An inventory item's stock falls to or below its reorder point Manager — triggers a reorder
Actor Exclusion Rule
You will never receive a notification for actions you performed yourself. For example, if you advance an order to READY, you will not receive the ORDER_READY notification — but other staff members who have that notification type enabled will.

8.3 Configuring Your Notifications

Each staff member can control which notification types they receive. Go to SettingsNotification Preferences.

Each notification type has an on/off toggle. Turning a type off means you will stop receiving that type of notification entirely.

Notification Preferences — Settings page
Recommended Settings by Role
  • Front Desk: Enable FORM_COMPLETED, INTAKE_COMPLETED, ORDER_READY
  • Optician: Enable ORDER_LAB_RECEIVED, ORDER_READY
  • Manager: Enable all types
  • Inventory: Enable PO_RECEIVED, LOW_STOCK
Section 9
09

Settings

The Settings page lets you manage your personal account and notification preferences. Some system-level settings are visible here but are read-only for non-admin staff.

Screenshot: 21-settings

9.1 Account

Displays your current account details:

  • Display Name — how your name appears throughout the portal
  • Email Address — your login email
  • Role — either Staff or Admin

To change your name or email, contact your manager. These fields cannot be self-edited.

9.2 Change Password

To update your password:

  1. Enter your current password in the first field.
  2. Enter your new password in the second field.
  3. Re-enter the new password in the confirmation field.
  4. Click "Update Password".
Password Security
Choose a strong password (12+ characters, mix of letters, numbers, and symbols). Do not reuse passwords from other accounts. If you suspect someone knows your password, change it immediately.

9.3 System Settings (Read-Only)

This card displays store-wide configuration values. These are set by the system administrator and cannot be changed from this page:

  • Business Name — appears on invoices and work orders
  • Tax Rate — applied to invoices
  • Invoice Notes — default notes printed on all customer invoices (e.g., "Thank you for choosing Mint Vision!")
Admin Note
If system settings need to be changed (e.g., tax rate update, business address change), contact the system administrator or technical support.

9.4 Display Preferences

Choose the text size that is most comfortable for you. Three options are available:

  • Small — Compact text (~14 px base), ideal for fitting more data on screen at once.
  • Medium — The default browser size (~16 px). Recommended for most users.
  • Large — Larger text (~18 px base), ideal for accessibility or larger monitors.

Click the desired button in the Display Preferences card. The change applies instantly and persists across sign-outs — no page refresh needed.

Accessibility Tip
Selecting Large scales all text, sidebars, tables, and cards proportionally — nothing overflows or breaks. This setting is per-user, so one person can use Large while another uses Small on the same device.

9.5 Notification Preferences

A list of all notification types with on/off toggles. Changes save immediately — no need to click a "Save" button. See Section 8.3 for recommended settings by role.

Section 10
10

Campaigns

The Campaigns module lets you send targeted SMS and email messages to your patients automatically — recalls, insurance reminders, follow-ups, and more. Campaigns run on autopilot once activated.

Note: SMS and email delivery are not yet live. The campaign engine is fully built and tested, but Twilio (SMS) and Resend (email) integration must be configured before messages actually send. Contact your administrator to enable.

10.1 What Are Campaigns?

A campaign is an automated sequence of messages sent to a group of patients. Each campaign has:

  • Type — what kind of outreach (exam reminder, insurance renewal, etc.)
  • Segment — which patients qualify (based on age, last exam, Rx expiry, etc.)
  • Drip steps — one or more messages sent at defined intervals (e.g. SMS on day 0, email on day 14)
  • Recipients — the patients enrolled in this campaign and their progress

Navigate to Campaigns in the sidebar to see your campaign list.

10.2 Campaign Types

The system includes 21 pre-built campaign types, each with a default drip sequence:

TypePurpose
Exam ReminderAnnual recall — remind patients it's time for a checkup
Insurance RenewalAlert patients when their vision benefits are about to renew
Prescription ExpiryNotify patients whose Rx is expiring soon
Walk-in Follow-upFollow up with walk-in visitors who didn't purchase
Second PairOffer a second pair to recent frame buyers
Post Purchase ReferralAsk satisfied customers to refer friends
Dormant ReactivationRe-engage patients who haven't visited in 18+ months
Birthday / AnniversarySend a special offer on the patient's birthday
One-Time BlastA single broadcast message to a group (sale, event, etc.)
VIP InsiderExclusive early access for high-value patients
…and 11 more types including Insurance Maximization, Damage Replacement, New Arrival VIP, and others

10.3 Creating a Campaign

  1. Go to Campaigns → New Campaign
  2. Select a Campaign Type — the system pre-fills a drip sequence for you
  3. Give the campaign a Name and optional description
  4. Optionally configure a Segment — define which patients automatically qualify (e.g. "patients aged 40+ whose last exam was 300–400 days ago")
  5. Review the pre-built drip steps (you can customise the message body)
  6. Click Create Campaign — it starts in Draft status
  7. From the campaign detail page, click Activate when you're ready for it to run
Tip: Leave the segment blank to enroll patients manually one by one from the campaign detail page. Use a segment to have patients auto-enrolled on every daily run.

10.4 Campaign Status Lifecycle

StatusMeaning
DraftBeing set up — not running, no messages sent
ActiveRunning — processes daily, enrolls new patients, sends drip messages
PausedTemporarily stopped — no new messages; can be re-activated
ArchivedPermanently stopped — kept for history

Use the action buttons on the campaign detail page to move between statuses.

10.5 Recipients & Segments

Manual Enrollment

On any campaign detail page, click Enroll Patient to add a specific patient. Useful for small targeted outreach or testing.

Automatic Segment Enrollment

If the campaign has a segment configured, every daily run evaluates which patients match and auto-enrolls any who haven't been enrolled before. Patients who opt out are excluded.

Segment Conditions

You can filter by: age, lifetime order count, days since last exam, days since last order, Rx expiry window, insurance renewal month, gender, city, onboarding status, and more. Combine conditions with AND or OR logic.

Recipient Statuses

StatusMeaning
ActiveEnrolled and receiving drip messages
CompletedFinished all drip steps
ConvertedPlaced a qualifying order after enrollment — no more messages sent
Opted OutPatient requested opt-out — removed from all campaigns
PausedTemporarily paused for this recipient

10.6 Analytics

The Campaigns → Analytics page shows a cross-campaign view: total messages sent, delivery rate, conversion rate, and revenue attributed to campaigns.

Individual campaign detail pages show per-campaign metrics: recipients enrolled, messages sent vs failed, conversions, and a full message log.

10.7 Automatic Scheduler

The system runs a daily job at 9am UTC that processes all Active campaigns automatically. For each campaign it:

  1. Finds patients who match the segment and enrolls them
  2. Sends the appropriate drip step message to each enrolled patient (if the delay has elapsed)
  3. Checks whether any patient placed an order (and marks them Converted)
  4. Records a run log with full stats
  5. Fires a notification to staff when complete

You can also trigger a run manually from the campaign detail page (Admin only).

Opt-Out Handling: Any patient with Marketing Opt-Out enabled is automatically skipped. Patients without a phone number are skipped for SMS steps; patients without an email are skipped for email steps.

10.8 Post-Purchase Enrollment at Pickup

When staff click "Confirm Pickup" in the Pickup Complete modal, the system automatically enrolls patients into campaigns based on the toggles selected — no manual campaign management needed.

How It Works

  • Referral toggle checked — the system finds your active Post Purchase Referral campaign and immediately creates a recipient record for the purchasing patient (step 0, status Active). The first referral message goes out 3 days later per the campaign schedule.
  • Family promo toggle checked — the system finds your active Family Add-on campaign and enrolls each linked family member (the purchaser themselves is excluded). Useful for nudging a spouse or child to come in.

Prerequisites

  • The relevant campaign must exist and have status Active. If no active campaign of that type exists, the toggle is silently ignored — the pickup still completes normally.
  • For family promo, the patient must have family members linked on their profile (see Customer → Family Linking).
  • Patients with Marketing Opt-Out enabled are never enrolled, even if the toggle is checked.
Tip: Create and activate your Post Purchase Referral and Family Add-on campaigns once — then the pickup flow handles enrollment for every order automatically. You can view and manage enrolled recipients from the campaign detail page.
Section 11
11

Phase 1 & 2 Features

17 new features shipped in V2.2.0 spanning eye exam ordering, customer profile enhancements, referrals, invoicing, appointments, email delivery, and inventory expansion.

11.1 Eye Exam Order Sub-flow

When creating a new order and selecting Eye Exam as the order type, the wizard inserts an Exam Details step:

1
Exam Type
Select one: Complete Adult Eye Exam, Child/Teenager (Under 19), or Senior (Above 65). These map to your billing categories.
2
Payment Method
Choose: Insurance Full, Insurance Partial, OHIP, or Self-bill/Out of Pocket.
3
Insurance Amount (if Partial)
When "Insurance Partial" is selected, an Amount Covered by Insurance input appears. The patient balance auto-calculates as you type.
Tip: Eye exam orders (EXAM ONLY) do not auto-open the work order when sent to lab.

11.2 Customer Insurance Manager

The insurance section on customer profiles has been upgraded from a read-only display to a full Insurance Policy Manager:

  • Each policy shows: Provider, Contract Number, Member ID, Last Claim Date, Estimated Next Claim Date (auto-calculated from last claim + eligibility interval), and Estimated Insured Amount
  • Click "Add Policy" to expand an inline form and save a new policy
  • Edit or deactivate any policy using the icons on each card
  • Deactivated policies are hidden from the active list but retained in the database

11.3 Family Members Auto-linking

The Family Members card on a customer profile helps you group households together:

  • Click "Find Family Matches" — the system searches for other customers with the same phone number or address and surfaces suggestions
  • Use "Create Family Group" to start a new family and link the current customer
  • Use "Add to Existing Family" to join a family group that's already set up
  • Once linked, all family members appear as avatar links — click any to open their profile
Tip: Family linking is especially useful for the Post-Pickup Family Promo feature — when a patient picks up their order, staff can enroll their family members in a special offer campaign.

11.4 Referral Code Tracking

Each customer can have a unique referral code that you share with them to track new business they bring in.

Generating a Code

  1. Open the customer profile
  2. Find the Referral Code card
  3. Click "Generate Code" — a code like MV-JADO-4821 is created
  4. Use the copy button to copy it to your clipboard
  5. Share the code with the patient verbally or send it to them

Using a Code on an Order

  1. In the Order Wizard, go to the Payment step
  2. Type the referral code into the Referral Code field (e.g. MV-JADO-4821)
  3. Click "Apply" — the system validates the code and shows a green confirmation: "Referred by [Name] — $25 applied"
  4. A $25 credit is automatically deducted from the order total
  5. When the order is saved, $25 store credit is created in the referrer's profile automatically
  6. To remove the code before saving, click the on the green confirmation banner
Tip: Only PENDING (unused) referral codes can be applied. If a code has already been redeemed or is invalid, an error message will appear below the field.

The Referral History table on each customer's card shows: referred customers, dates, statuses, and total rewards earned.

11.5 Saved Frames

Staff can bookmark frames a patient liked during a visit for easy follow-up.

Saving a Frame

  1. Open the customer profile → Saved Frames card
  2. Click "Save Frame"
  3. Either search for an existing inventory item, or enter brand/model/color manually
  4. Optionally take a photo with the iPad camera or upload an image
  5. Set an Expected Return Date if the patient said they'd come back to try them again
  6. Click Save

Managing Saved Frames

  • Tap the heart icon to mark a frame as a favorite
  • Inline return date edit — click the return date label (or “Set return date” if none set) to open an inline date picker; click Save to persist or to cancel
  • Remove a frame with the delete button (confirmation required)
  • The Dashboard Follow Ups section surfaces customers with overdue or upcoming expected return dates

11.5.1 Frame Image Auto-Lookup

Finding a photo of a frame no longer requires manual searching. Two helpers are built into the Add Frame form:

Find Image Online Link

While adding a frame, once you've filled in both Brand and Model, a "Find image online" link appears below the camera button:

  1. Open the customer profile → Saved FramesSave a Frame
  2. Type the brand (e.g. Ray-Ban) and model (e.g. RB5154)
  3. The "Find image online" link appears
  4. Click it — Google Images opens in a new tab with search results for "Ray-Ban RB5154 eyeglasses"
  5. Find the right photo, copy its URL, and paste it into the frame form (or download and upload via the camera button)
Tip: The link disappears if you clear the model field — it only appears when both brand and model are filled in.

Photo Auto-Populate from Inventory

If you pick a frame from your inventory autocomplete (the search field at the top of the Add Frame form) and that same customer already has a Saved Frame for that inventory item with a photo saved, the photo is automatically pre-filled. You don't have to find or upload it again.

11.6 Styling Appointment Quick-Booking

Book a frame styling appointment directly from the customer profile without leaving the page.

  1. Open the customer profile → Appointments card
  2. Click "Book Appointment"
  3. Select a date, time, duration (default 30 min), and optional notes
  4. The appointment type defaults to Styling
  5. Click Book — the appointment appears in the upcoming list immediately

Upcoming styling appointments also appear in the Dashboard → Follow Ups section so no booking gets missed.

New in v2.4: The dedicated Appointments page (sidebar → Appointments) shows a full weekly calendar for all appointment types. You can book, view, and manage all appointments there. See Section 12 for the full guide.

11.7 Email Invoice

Send a PDF invoice as an email attachment to the patient from the invoice page. The email contains a short thank-you message and the invoice PDF is attached.

  1. Open an order → click Invoice
  2. Click the "Email Invoice" button (mail icon) in the action bar
  3. The button shows a loading spinner while sending, then "Sent!" on success or "Failed" on error
  4. The email is sent to the patient's email address on file via Resend
Note: The Email Invoice button only appears when the patient has an email address on file. If the button is missing, add the patient's email to their profile first.

You can also check "Email invoice to patient" in the Order Wizard review step — the email will be sent automatically when the order is submitted.

Auto-send on pickup: When staff click Mark Picked Up and confirm the pickup modal, an invoice email is automatically sent to the patient. No extra step needed — it fires in the background. If the patient has no email on file the email is silently skipped.

11.8 Add Another Order

There are two ways to add a second order for the same patient — one before saving, one after.

Option A — Queue Before Saving (Step 7 Checkbox)

Check "Add another order for {Patient First Name} after saving" in the Invoice Actions card on the Review step before clicking Create Order. The wizard resets immediately after saving with the same patient selected — no overlay, no detour. See Section 4.8 for the full walkthrough.

Option B — Success Overlay After Saving

If the checkbox was not checked, a success overlay appears after the order is saved with three options:

  • View Order — navigate to the new order's detail page
  • Add Another Order for [Patient Name] — resets the form and keeps the same customer selected (skips customer search step)
  • Back to Orders — return to the fulfillment board

Both options are ideal for same-visit appointments where a patient orders glasses and contacts at the same time.

11.9 Purchase Order — Expanded Line Items

The PO creation form now supports two modes per line item:

Select Existing Frame

Search your existing inventory and pick a frame. The frame's details auto-fill. Enter quantity and unit cost.

Add New Frame

Enter all frame details manually. New fields available:

FieldNotes
Brand / Model #Free text
GenderUnisex / Men / Women / Kids
Eye Size / Bridge / TempleFrame measurements in mm
Colour / Colour CodeColour from dropdown; code is vendor's exact code
Retail PriceSets the suggested selling price
Gross ProfitAuto-calculated: Retail Price − Unit Cost
Frame TypeOptical / Sunglasses / Reading / Safety / Sport
MaterialAcetate / Metal / Titanium / TR-90 / Stainless Steel / Mixed / Other

When the PO is saved, "Add New Frame" items automatically create a new InventoryItem record with an auto-generated SKU.

SKU Preview: While filling in the new frame form, the SKU Preview updates live — e.g. RAY-RB5154-2000-49-21 — so you can verify it before saving.

11.10 SKU Auto-Generation

When a new inventory item is created (via the PO form or directly), the system can auto-generate a SKU:

Format: {BRAND3}-{MODEL}-{COLORCODE}-{EYESIZE}-{BRIDGE}

Example: RAY-RB5154-2000-49-21 (Ray-Ban RB5154, colour code 2000, 49mm eye, 21mm bridge)

  • Brand prefix: first 3 characters, uppercase, special characters stripped (e.g. "Saint-Laurent" → SAI)
  • Optional parts are omitted if blank — e.g. just brand + model gives RAY-RB5154
  • If a collision exists, the system automatically appends -2, -3, etc.

11.11 Received Frames Tab & Display Tracking

Find this page at Inventory → Received Frames in the sidebar.

This view shows all frames that have been received from purchase orders, so you can track when they were put on display for customers.

Columns

ColumnDescription
Brand / ModelFrame identity
Colour / SKUItem code
Received DateWhen the PO receiving was recorded
PO NumberLinks to the source purchase order
Display Status"Not Displayed" or "Displayed since [date]"
ActionMark Displayed / Remove from Display button

Marking a Frame as Displayed

  1. Find the frame in the Not Yet Displayed filter (default)
  2. Click "Mark Displayed"
  3. Optionally enter a display location (e.g. "Wall A - Shelf 3")
  4. Click Confirm — the row moves to the Displayed filter and the date is recorded
Aging tip: The table sorts by received date oldest-first so frames that arrived longest ago appear at the top. Use this to prioritise getting recently received stock onto the floor.
Section 12
12

Appointments

The Appointments page gives you a full weekly calendar to view, book, and manage all patient appointments — eye exams, fittings, pickups, adjustments, and styling sessions — in one place.

12.1 Weekly Calendar

Navigate to Sidebar → Appointments (calendar icon) to open the calendar. The view always opens on the current week.

  • 7 day columns (Mon–Sun) with the date number and an appointment count badge per day
  • Time gutter on the left shows hours from 9 AM to 7 PM in 30-minute slots
  • Today's column is lightly highlighted; a red horizontal line tracks the current time
  • Appointment cards are color-coded by type and sized proportionally to their duration
  • If two appointments overlap in the same time slot, they tile side by side within the column

Week Navigation

  • Use the ← / → arrow buttons in the toolbar to move to the previous or next week
  • The URL updates to /appointments?week=YYYY-MM-DD — you can bookmark or share any week view
  • Click Today (appears when you're not on the current week) to jump back instantly

12.2 Booking an Appointment

There are two ways to open the booking modal:

  • Click "+ Book Styling" in the toolbar — opens the modal with Eyewear Styling pre-selected
  • Click any empty time slot on the calendar — opens the modal with that day and time pre-filled
1
Search for the patient
Type a name in the search box. Results appear after 300ms. Click a result to select the patient — a green summary card replaces the search field.
2
Set appointment details
Choose the appointment type, date/time, and duration (15/30/45/60/90 min). Add optional notes for the appointment.
3
Click Book
The modal closes and the appointment card appears on the calendar immediately. No page refresh needed.
Tip
If the patient isn't in the system yet, click "No match? Add a new patient →" at the bottom of the search results. It opens /customers/new in a new tab — create the patient there, then come back and search again.

12.3 Managing Appointments

Click any appointment card to open the Actions Popover. It shows the patient name (linked to their profile), appointment type, time range, and current status badge.

Status Transitions

The available action buttons change based on the current status:

Current StatusAvailable Actions
SCHEDULEDConfirm, Check In, Cancel, No Show
CONFIRMEDCheck In, Cancel, No Show
CHECKED INComplete
COMPLETEDReschedule
CANCELLEDReschedule
NO SHOWReschedule

Rescheduling

For CANCELLED, NO SHOW, or COMPLETED appointments, the popover shows a Reschedule section with an inline datetime picker. Pick the new date/time and click Reschedule. The appointment status resets to SCHEDULED and the card reappears on the calendar at the new time.

Note
Cancelled and No-Show appointments appear as faded/muted cards on the calendar. This is intentional — they remain visible so you can see the history and reschedule if needed.

12.4 Appointment Types & Colors

TypeColorTypical Use
Eye ExamBlueFull optometric examination
Contact Lens FittingPurpleContact lens trial and fitting
Follow-UpOrangePost-exam or post-order check-in
Glasses PickupGreenOrder ready — patient coming to collect
AdjustmentYellowFrame fit adjustment after pickup
Eyewear StylingEmeraldFrame selection consultation
Tip
Styling appointments booked from the customer profile page (via the Appointments card) will also appear on the weekly calendar automatically — there's no duplication.
Section 13
13

Staff Tasks

The Task Queue gives your team a shared to-do list for follow-up calls, lab work, admin tasks, and marketing actions. Tasks can be assigned to specific staff or roles, linked to patients, and tracked with comments.

13.1 Task List & Filters

Navigate to Sidebar → Tasks (clipboard icon). The sidebar also shows a red badge with your open task count.

  • My Tasks (default ON) — shows only tasks assigned to you or your role
  • Status chips — All, Open, In Progress, Done
  • Category chips — Clinical, Admin, Lab, Marketing
  • Urgent toggle — filter to show only urgent tasks
  • Search box — search by title or description text
  • Overdue tasks appear with a red background and red due date
  • Tasks sort by: Urgent first, then by due date, then newest first

13.2 Creating a Task

Click "+ New Task" in the top-right of the Tasks page. The modal includes:

  • Title (required) — a short description of what needs to be done
  • Category — Clinical, Admin, Lab, or Marketing
  • Priority — Normal or Urgent (toggle buttons)
  • Assign to — pick a specific staff member, or "Any Staff" / "Any Admin" for role-based assignment
  • Link to patient — type to search by name or phone; the task will appear on that patient's profile
  • Due date — optional deadline (tasks past this date show as overdue)
  • Description — optional notes with more detail
Tip
When a task is assigned to someone other than you, they receive a notification automatically. No need to message them separately.

13.3 Task Details & Comments

Click any task row to open the detail panel (slide-over from the right):

  • Status buttons — move the task through Open → In Progress → Done, or Cancel it
  • Edit any field — title, category, priority, assignee, due date, and description are all editable inline
  • Comments — add notes for handoff or progress updates; each comment shows author and date
  • Delete — soft-deletes the task (it won't appear in lists anymore)

13.4 Patient-Linked Tasks

When a task is linked to a patient, it also appears on the customer detail page in a Tasks card (right column, between Appointments and Referrals).

  • The card shows all open/in-progress tasks for that patient
  • Click "+ Add Task" to create a task pre-linked to that patient — no need to search
  • Click any task to jump to the full task detail panel on the Tasks page
Use cases
  • "Call Mrs. Johnson about her new bifocal options" (Clinical)
  • "Follow up on lab delay for order ORD-2026-042" (Lab)
  • "Send birthday promo to VIP customers" (Marketing)
  • "Restock lens cleaning kits before Saturday" (Admin)
Section 14
14

Exams — Weekly Tracking

The Exams page provides a weekly view of all eye exams with payment method tracking.

14.1 Week Navigation

Use the arrow buttons to move between weeks. Click "Today" to jump back to the current week. The current week is highlighted.

14.2 Summary Cards

  • Total Exams — count of exams for the displayed week.
  • Total Billed / Total Paid — dollar totals for the week.
  • Payment Breakdown — count of exams by payment method (Cash, Insurance, OHIP, etc.).

14.3 Exam Table

Each exam shows patient name (linked to their profile), date, exam type, doctor, payment method, amount billed, and amount paid.

14.4 Logging a New Exam

  1. Click Log Exam (top-right button).
  2. Search for the patient by name or phone.
  3. Select the exam date, type, and doctor.
  4. Choose the payment method (Cash, Debit, Insurance, etc.) and check "OHIP Covered" if applicable.
  5. Enter the amount billed and amount paid.
  6. Add optional clinical notes.
  7. Click Log Exam to save.
Tip
Use the payment breakdown to quickly see how many exams were OHIP vs. insurance vs. self-pay each week — helpful for billing reconciliation.
Section 15
15

Google Reviews — Tracking

Track which customers have given a Google review so staff knows who to ask and who not to.

15.1 Customer Detail — Google Review Card

On the customer detail page (left column), there is a Google Review card:

  • If the customer has given a review, a green "Given" badge appears with the date and any note.
  • If the customer has not given a review, a "Mark as given" link appears. Click it to expand a form where you can add an optional note (e.g., "5 stars, mentioned Dr. Smith").
  • You can remove the review status at any time by clicking the red "Remove review status" link.

15.2 Customer List — Star Indicator & Filter

  • A yellow star icon appears next to a customer's name in the list if they have given a Google review.
  • Use the Reviewed / Not Reviewed filter pills (next to the lifecycle tabs) to filter the customer list by review status.
Tip
Use the "Not Reviewed" filter to quickly find customers who haven't left a review yet — great for running a review drive campaign.
Section 16
16

Security & Compliance

The portal is designed to meet PHIPA and PIPEDA requirements for handling protected health information. This section explains the automatic security controls all staff will encounter, and documents the Admin-only compliance tools.

16.1 Session Idle Timeout

For patient privacy, the portal automatically signs you out after 30 minutes of inactivity (no page navigations during that time).

  • When this happens, you land on the login page with a yellow banner: "You were signed out due to inactivity."
  • Simply log back in — all previously saved work is preserved in the database.
  • Any time you navigate to a new page, the 30-minute timer resets.
Best Practice
If you're stepping away from the reception desk, log out manually (Settings → Log Out) rather than waiting for the auto-timeout. This ensures patient data is not visible to anyone passing by.

16.2 Password Policy & Account Lockout

To protect patient records, all passwords must meet these requirements:

  • Minimum 12 characters
  • At least one uppercase letter (A–Z)
  • At least one lowercase letter (a–z)
  • At least one number (0–9)
  • At least one special character (e.g., !, @, #, $)

The Change Password form shows a real-time checklist with a green checkmark next to each rule as you type — you cannot save until all five rules are satisfied.

Account Lockout

After 5 consecutive failed login attempts, the account is automatically locked for 15 minutes. During this time the login form shows:

"Account locked until [time]. Too many failed attempts."

  • The lock clears automatically after 15 minutes — no admin action needed in most cases.
  • If you need immediate access, your store manager can clear the lockout in the database.
Security Note
If your account is locked and you did not enter five wrong passwords yourself, contact your manager immediately — it may indicate an unauthorized access attempt on a patient record system.

16.3 Audit Log (Admin Only)

Every create, update, delete, login, and logout event in the portal is automatically recorded in a tamper-evident audit log. This log is required by PHIPA for any healthcare application that stores protected health information.

To access: Sidebar → AdminAudit Log
(The Admin section is only visible to accounts with the Admin role.)

What Is Logged

EventWhen It Fires
LOGINSuccessful staff sign-in
LOGOUTStaff clicked Log Out
LOGIN_FAILEDWrong password entered
ACCOUNT_LOCKED5th failed attempt triggered lockout
PASSWORD_CHANGEStaff updated their password
CREATENew customer, order, prescription, vendor, appointment, etc. added
UPDATECustomer record edited, order notes changed, etc.
DELETECustomer soft-deleted, inventory item removed
STATUS_CHANGEOrder status advanced (e.g., LAB_RECEIVED → VERIFIED)
FORM_SUBMITTEDPatient completed an intake form online
INTAKE_APPLIEDStaff applied intake data to patient record
PO_RECEIVEDPurchase order marked as received

Filtering & Reading the Log

Use the filter bar at the top to narrow results by Record Type, Action, Staff Member, or Date Range. Results are ordered newest-first, 50 per page.

Click the ▼ Changes arrow on any row to expand the before/after JSON diff for that event — useful for auditing specific edits to patient records.

PHIPA Requirement
Under PHIPA, you must be able to demonstrate who accessed or modified patient records and when. The Audit Log fulfills this obligation automatically — no manual entry is needed.

16.4 Breach Reports (Admin Only)

If a privacy breach occurs — such as unauthorized disclosure of patient health information — PHIPA requires notifying the IPC (Information and Privacy Commissioner of Ontario) within 30 days and affected individuals as soon as feasible.

To access: Sidebar → AdminBreach Reports

Filing a New Breach Report

1
Go to Admin → Breach Reports → Report a Breach
Accessible only from the Admin section of the sidebar.
2
Fill in the breach details
Discovery date, description of what happened, estimated number of affected patients, data types involved (PHI, insurance, prescriptions), and immediate containment actions already taken.
3
Click Submit
The report is saved with status OPEN and appears in the Breach Reports list.

Breach Status Workflow

OPEN INVESTIGATING IPC NOTIFIED INDIVIDUALS NOTIFIED RESOLVED

Advance the status from the breach detail page as each step is completed. Each transition records a timestamp.

IPC Notification Letter

From any breach detail page, the system automatically generates a pre-filled IPC notification letter. Click "View IPC Notification Letter" to see the text — copy it into an email or letter addressed to the IPC.

Legal Obligation
Failing to report a privacy breach to the IPC within 30 days may result in regulatory action under PHIPA. Contact your privacy officer immediately upon discovering any unauthorized access to patient records.

16.5 Staff Roles Overview

Each staff account is assigned one of three roles:

RoleCan DoCannot Do
AdminAll operations, including Audit Log, Breach Reports, and user management
StaffAll day-to-day operations: create orders, customers, forms, purchase orders, appointmentsAdmin-only pages
ViewerView all records in read-only modeCreate, edit, or delete anything

If you are assigned the Viewer role, all "New", "Edit", and "Delete" buttons are hidden from the UI. Attempting a write operation via a direct URL redirects to the dashboard with a permissions error.

Tip
The Viewer role is useful for external accountants, locum opticians, or trainees who need read-only access to patient records without the ability to modify anything.
Section 17
17

Quick Reference

Tear out this section and keep it at your workstation. Everything you need at a glance.

10.1 Order Status Cheat Sheet

StatusBadgeStaff Action Required
DRAFTDRAFTReview and confirm with patient. Collect deposit.
CONFIRMEDCONFIRMEDPrint work order. Send to lab.
LAB ORDEREDLAB ORDEREDMonitor expected delivery. Follow up if overdue.
LAB RECEIVEDLAB RECEIVEDOptician verifies Rx against prescription.
VERIFIEDVERIFIEDCall/text patient. Mark Ready.
READYREADYPatient notified. Collect balance. Dispense.
PICKED UPPICKED UPComplete — no action needed.
CANCELLEDCANCELLEDProcess refund if deposit was collected.

10.2 Customer Lifecycle Quick Reference

BadgeDefinitionRecommended Action
VIP3+ orders or LTV > $2,000Priority service. Early access to new collections.
ActivePurchase in last 18 monthsRecall timing. Second-pair push.
New<6 months old, ≤1 orderOnboarding. Build relationship.
Lapsed18 months – 3 years since purchaseProactive outreach. Offer incentive to return.
Dormant3+ years or never purchasedWin-back campaign or data review.
LeadNew record, no orders yetFollow up. Convert to first visit.

10.3 Common Tasks — Step by Step

👤 Create a New Customer

  1. Sidebar → Customers
  2. Click "New Customer" (top right)
  3. Fill in name, phone, email, DOB
  4. Click "Save"

📦 Create a New Order

  1. Sidebar → Fulfillment Board
  2. Click "New Order" (top right)
  3. Complete all 7 wizard steps
  4. Click "Place Order"

📋 Send a Patient Form

  1. Sidebar → Forms
  2. Select the template type
  3. Search for the patient
  4. Click "Generate Link"
  5. Copy link → send via text/email

📦 Send Intake Package (New Patient)

  1. Sidebar → Forms → Intake Packages tab
  2. Click "New Intake Package"
  3. Select or create the patient
  4. Copy the package link → send to patient

👓 Add a Frame to Inventory

  1. Sidebar → All Frames
  2. Click "New Item"
  3. Fill in brand, model, SKU, pricing
  4. Enter initial stock qty
  5. Click "Save Item"

🛒 Create a Purchase Order

  1. Sidebar → Purchase Orders
  2. Click "New PO"
  3. Select vendor + expected date
  4. Add line items (frame + qty + cost)
  5. Click "Send to Vendor"

✅ Mark Order Picked Up

  1. Open the order detail page
  2. Verify status is READY
  3. Click "Mark Picked Up"
  4. Complete the pickup modal
  5. Collect remaining balance

🧾 Issue an Invoice

  1. Open the order detail page
  2. Click "Invoice" button (top right)
  3. Review the invoice
  4. Click "Issue Invoice"
  5. Print or share with patient

🔬 Receive a Purchase Order

  1. Sidebar → Purchase Orders
  2. Open the relevant PO
  3. Click "Receive Items"
  4. Enter qty received per line
  5. Click "Confirm Receipt"

🔔 Change Notification Settings

  1. Sidebar → Settings
  2. Scroll to Notification Preferences
  3. Toggle each type on or off
  4. Changes save automatically

10.4 Keyboard & Navigation Tips

TipDescription
Cmd+P (Mac) / Ctrl+P (Windows)Print current page. Use for Work Orders and Invoices.
Browser Back ButtonNavigate back to the previous page. Safe to use — no data loss on read-only pages.
Click Order # in any listOpens that order's detail page in the same tab.
Click Customer Name in any listOpens that customer's detail page.
Refresh page (Cmd/Ctrl+R)Forces the notification bell to refresh immediately (instead of waiting 30 seconds).
Right-click → Open in New TabOpen an order or customer in a new tab while keeping your current view.
Search barsMost search bars are instant — no need to press Enter. Just type and results appear.

10.5 Who to Call for Help

IssueContact
Forgot passwordYour store manager (they can reset it)
Can't log inYour store manager first, then technical support
Patient can't access their form linkGenerate a new link from Forms → the old one may have expired
Inventory count is wrongReview the inventory ledger for that item to see what movements occurred
Order stuck in wrong statusContact your manager — status changes are logged and may require correction
Technical bug or errorTake a screenshot and contact technical support
Mint Vision Optique — Staff Portal
Version 2.5  ·  February 2026  ·  Confidential — Internal Use Only
For technical support, contact your system administrator.